#pragma once
#include <vector>
#include <string>
#include <queue>
#include <mutex>
#include <thread>
#include <iostream>
#include "rclcpp/rclcpp.hpp"
#include <agv_msgs/msg/agv_auto_status.hpp>
#include "TimeStamp.h"
#define CURVE_LIGHT_BITS 14

namespace io_module {
// 特殊场景需求-北奔
class SpecialScene
{
public:
  enum SpecialLight
  {
    NoControl = 0,
    ReadyStartLight = 1,
    ReadyCurveLight = 2,
    CurveLight = 3

  };

  explicit SpecialScene(const std::shared_ptr<rclcpp::Node>& node);

  void updateStatus(agv_msgs::msg::AgvAutoStatus inStatus);

  int getScene();

private:
  SpecialLight m_curLight;

  CTimerTriggerOnce m_trigIdleTimer;

  CTimerTriggerOnce m_trigCurveTimer;

  agv_msgs::msg::AgvAutoStatus m_curStatus;

  agv_msgs::msg::AgvAutoStatus m_lastStatus;
};
}